package com.dbsop.common.util;

import com.alibaba.fastjson.JSON;

import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Date;

/**
 * 基础类型判断操作
 */
public class TypeOpt {


//    public interface BaseTypeHandler<T>{
//
//        /**
//         * 失败的处理
//         */
//        default T failedHandler(){
//
//            return null;
//        }
//
//        /**
//         * 成功处理
//         * @return
//         */
//        T handler();
//    }
//
//    public static <T> T baseTypeHandler(Class type,BaseTypeHandler<T> baseTypeHandler){
//        if (!type.isPrimitive() && !type.isAssignableFrom(Date.class) && !type.isAssignableFrom(String.class)){
//           return baseTypeHandler.handler();
//        }
//        return baseTypeHandler.failedHandler();
//    }

    /**
     * 是否是基础类型
     * @param type
     * @return
     */
    public static boolean checkEsType(Class type){
        if (isBaseDefaultValue(type) || Date.class.isAssignableFrom(type) || String.class.isAssignableFrom(type)){
            return true;
        }
        return false;
    }


    /**
     * 判断是否为基本类型的默认值
     * @param clazz
     * @return
     */
    public static boolean isBaseDefaultValue(Class clazz) {
//        Class className = object.getClass();
//        String strClassName = "" + className;
        if(clazz.equals(java.lang.Integer.class)) {
            return true;
        } else if(clazz.equals(java.lang.Byte.class)) {
            return true;
        } else if(clazz.equals(java.lang.Long.class)) {
            return true;
        } else if(clazz.equals(java.lang.Double.class)) {
            return true;
        } else if(clazz.equals(java.lang.Float.class)) {
            return true;
        } else if(clazz.equals(java.lang.Character.class)) {
            return true;
        } else if(clazz.equals(java.lang.Short.class)) {
            return true;
        } else if(clazz.equals(java.lang.Boolean.class)) {
            return true;
        }
        return false;
    }
}
